import Serializer=require('./../../../base/Serializer');
import TextObj=require('./../../TextObj');
import LineStyle=require('./LineStyle');
import FColorBase=require('./../../../color/FColorBase');
import FColor=require('./../../../color/FColor');
import Parser=require('./../../../base/Parser');

export = FontStyle;

/**
 * 文字属性，例如：字体\颜色\字号\字间距\行间距等文字的属性
 * @author 
 *
 */
class FontStyle extends Serializer{
    /**
     * visible, 是否显示,0不显示，1显示
     */ 
    public v: number=0;
    /**
     * font-name，字体
     */
    public fn: string="微软雅黑";
    /**
     * font-size，字号
     */
    public fs=20;
    
    /**
     * bold/italic  0.常规  1.粗体  2.斜体  3.粗斜体
     */
    public bi: number=TextObj.BI_NORMAL;
    /**
     * position  1.靠左  2.居中  3.靠右  4.分散对齐
     */
    public po: number=TextObj.POSITION_LEFT;
    /**
     * verticle-position  1.靠上  2.居中  3.靠下 
     */
    public vpo: number=TextObj.V_POSITION_TOP;
    
    /**
     * char space，字间距
     */
    public cs: number=6;
    /**
     * line space，行间距
     */
    public ls: number=10;
    
    /**
     * 默认横排
     */
    public td=TextObj.TEXT_DIRECTION_HORIZON;
    
    /**
     * 字数限制
     */ 
    public min: number = 1
    public max: number=100;
    
    /**
     * 0无限制/1限制成一行/2限制成一列/3限制到文本框中/4限制到mask中
     */ 
    public force: number=0;  
    
    /**
     * 颜色属性
     */ 
    public al: number=1;// alpha 透明度
    public color: FColorBase=new FColor();// 填充颜色
    
    public constructor(g?) {
        super(g);
    }
    // 从json对象(注意不是json字符串)中解析
    // 参数：self,true表示只拷贝自身数据，而不拷贝子的数据
    public fromJson(jsonObj,versionId,self?) {
        super.fromJson(jsonObj,versionId,self);

        this.v=jsonObj.v;
        this.fn=jsonObj.fn;
        this.fs=jsonObj.fs;// font-size，字号
        this.bi=jsonObj.bi;// bold/italic 0.常规   1.粗体   2.斜体   3.粗斜体
        this.po=jsonObj.po; // position 1.靠左   2.居中   3.靠右
        if(jsonObj.hasOwnProperty("vpo")) {
            this.vpo=jsonObj.vpo;
        }

        this.cs=jsonObj.cs; // char space，字间距
        this.ls=jsonObj.ls; // line space，行间距
//        this.te=jsonObj.te; // text
        this.td=jsonObj.td; // 默认横排
        
        if(jsonObj.hasOwnProperty('min')){
            this.min=jsonObj.min;
        }
        if(jsonObj.hasOwnProperty('max')) {
            this.max=jsonObj.max;
        }
        if(jsonObj.hasOwnProperty('force')) {
            this.force=jsonObj.force;
        }
        
        
        this.al=jsonObj.al;
        if(jsonObj.color!=null) {
            this.color=Parser.fromUnknownJson(jsonObj.color,versionId);
        }
    }
    // 转成json字符串
    public toJson(): string {
        // 去掉父json字符串的头尾
        var superJson=super.toJson();
        superJson=superJson.substr(1,superJson.length-2);

        var ret='{';
        ret+=superJson;
                    
        // v
        ret+=',';
        ret+='"v":'+'"';
        ret+=this.v+'"';
        
        // fn
        ret+=',';
        ret+='"fn":'+'"';
        ret+=this.fn+'"';
                    
        // fs
        ret+=',';
        ret+='"fs":';
        ret+=this.fs;   
           
        // bi
        ret+=',';
        ret+='"bi":';
        ret+=this.bi; 
            
        // po
        ret+=',';
        ret+='"po":';
        ret+=this.po; 
        
        // vpo
        ret+=',';
        ret+='"vpo":';
        ret+=this.vpo; 
            
        // cs
        ret+=',';
        ret+='"cs":';
        ret+=this.cs; 
           
        // ls
        ret+=',';
        ret+='"ls":';
        ret+=this.ls; 
            
//        // te
//        ret+=',';
//        ret+='"te":'+'"';
//        ret+=this.te+'"';
            
        // td
        ret+=',';
        ret+='"td":';
        ret+=this.td; 
        
        // min
        ret+=',';
        ret+='"min":';
        ret+=this.min;
        
        // max
        ret+=',';
        ret+='"max":';
        ret+=this.max;
        
        // force
        ret+=',';
        ret+='"force":';
        ret+=this.force;
        
        // al
        ret+=',';
        ret+='"al":';
        ret+=this.al;
        
        // color
        if(this.color!=null) {
            ret+=',';
            ret+='"color":';
            ret+=this.color.toJson();
        }

        ret+='}';
        return ret;
    }
    
    // 拷贝对象
    public copy(): FontStyle {
        var ret: FontStyle=new FontStyle();
        ret.fromJson(JSON.parse(this.toJson()),0);
        return ret;
    }
//SJG_MARK_APPEND--------------------
}//SJG_MARK_END-------------------------